// "http" 模块是 Node.js 中用于创建和处理 HTTP 服务器和客户端的核心模块
const http = require('node:http')
const url = require('node:url')      // 处理地址栏的参数

// 创建web服务
// req接收前端发送的消息
http.createServer((req, res) => {
    // const { pathname, query } = url.parse(req.url)   // 处理前端发的请求地址，拿到路由名称, get请求会有 query
    const { pathname, query } = url.parse(req.url, true)   // 参数传了 true   会自动将返回的结果序列化成一个对象
    // 区分请求方式
    if(req.method == "POST") {
        // res.end("post")
        if(pathname == "/post/login") {
            // 拿携带的请求参数
            let param = ''
            req.on('data', (chunk) => {  // 流接收，分块传的
                param += chunk
            })
            req.on('end', () => {
                res.statusCode = 200
                res.end(param)
            })
        } else {
            res.statusCode = 404
            res.end('404')
        }
    } else if(req.method == "GET"){
        // res.end('get')
        if(pathname == "/get/info") {
            console.log(query);
            res.end('get')
        } else {
            res.statusCode = 404
            res.end('404')
        }
    }
}).listen(9885, () => {
    console.log('启动成功');
})

/*
模拟前端请求：vscode里装一个 REST Client插件， 然后创建后缀为.http的文件，里面写请求就行
*/

// 反向代理 proxy
/*
    使用中间件 http-proxy-middleware ，安装一下
*/


// 动静分离 
/*
    静态资源和动态资源分开访问，静态资源可以作缓存
    静态资源类型判断可以使用 mime 插件，需安装一下
*/

// 邮件服务
/*
安装 js-yaml 和 nodemailer 库，邮箱的信息写在yaml文件中，不能写死在代码里
nodemailer是用来创建邮箱服务的
nodemailer.createTransport({       // 使用qq邮箱的服务，可以去参考qq邮箱的对外文档
    service: 'qq',     // 服务商
    host: 'smtp.qq.com',
    port: 465,
    secure: true,
    auth: {   // 邮箱信息
        user: '12345678@qq.com',  
        pass: '123456'
    }
})
*/